program task_119a;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes
  { you can add units after this };

var
  i: integer;
  e, n, s: real;
begin
  writeln('enter epsilon:');
  readln(e);

  i := 0;
  n := 0;
  s := 0;
  // бесконечный цикл, как и бесконечная сумма - это цикл while или repeat,
  // у которого есть (или нет) условие выхода.
  // в отличие от цикла for, этот тип цикла может никогда не завершиться
  repeat
    // первый раз мы прибавляем к сумме ноль, т.к. n = 0, поэтому так можно делать,
    // чтобы не вычислять первый раз слагаемое вне цикла, и не писать лишний код
    s := s + n;
    // вычисляем слагаемое и сразу выполняется проверка until - если условие
    // не выполняется, мы завершаем цикл
    i := i + 1;
    n := 1.0 / sqr(i);
    //writeln(n:3:9);
  // нам нужно выйти из цикла если n по модулю меньше чем e
  until abs(n) < abs(e);

  writeln('sum = ', s:3:9, ' for n = ', n:3:9, '. iterations made: ', i);
  readln;
end.

